package DB;

/**
 *
 * Opprydder.java  - "Programmering i Java", 4.utgave
 * Metoder for Ã¥ rydde opp etter databasebruk
 */
import java.sql.*;

/**
 * Klasse som rydder opp i databaseforbindelsene
 * @author Gruppe1
 */
public class Opprydder {

    /**
     * Metode som samler metodene i klassen til en metode og lukker disse
     * @param res
     * @param stm
     * @param forbindelse
     */
    public static void lukk(ResultSet res, Statement stm, Connection forbindelse) {
        lukkResSet(res);
        lukkSetning(stm);
        lukkForbindelse(forbindelse);
    }
    
    /**
     * Metode som lukker resultatSettet
     * @param res
     */
    public static void lukkResSet(ResultSet res) {
        try {
            if (res != null) {
                res.close();
            }
        } catch (SQLException e) {
            //skrivMelding(e, "lukkResSet()");
        }
    }
    
    /**
     * Metode som lukker statement setningen
     * @param stm
     */
    public static void lukkSetning(Statement stm) {
        try {
            if (stm != null) {
                stm.close();
            }
        } catch (SQLException e) {
            //skrivMelding(e, "lukkSetning()");
        }
    }
    
    /**
     * Metode som lukker forbindelsen
     * @param forbindelse
     */
    public static void lukkForbindelse(Connection forbindelse) {
        try {
            if (forbindelse != null) {
                forbindelse.close();
            }
        } catch (SQLException e) {
            //skrivMelding(e, "lukkForbindelse()");
        }
    }
    
    /**
     * Metode som ruller tilbake 
     * @param forbindelse
     */
    public static void rullTilbake(Connection forbindelse) {
        try {
            if (forbindelse != null && !forbindelse.getAutoCommit()) {
                forbindelse.rollback();
            }
        } catch (SQLException e) {
            //skrivMelding(e, "rollback()");
        }
    }
    
    /**
     * Metode som setter AutoCommit på eller av
     * @param forbindelse
     */
    public static void settAutoCommit(Connection forbindelse) {
        try {
            if (forbindelse != null && !forbindelse.getAutoCommit()) {
                forbindelse.setAutoCommit(true);
            }
        } catch (SQLException e) {
            //skrivMelding(e, "settAutoCommit()");
        }
    }
    
    /**
     * Metode som skriver ut melding hvis det oppstår en exception
     * @param e
     * @param melding
     */
    public static void skrivMelding(Exception e, String melding) {
        System.err.println("*** Feil oppstÃ¥tt: " + melding + ". ***");
        e.printStackTrace(System.err);
    }
}
